#include<bits/stdc++.h>
using namespace std;
int n,m,a[100009],b[100009];
char win[20][20];
int _2(int v){
    int num=1,Pow=0;
    while(num<v){
        num*=2;
        Pow++;
    }return Pow;
}
int main(){
    freopen("arena.in","r",stdin);
    freopen("arena.out","r",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=m;i++)cin>>b[i];
    int k=_2(n);
    for(int i=1;i<=k;i++){
        for(int j=1;j<=pow(2,k-i);j++)
            cin>>win[i][j];
    }int q;
    cin>>q;
    while(q--){
        int x[4],ans=0,g=0;
        cin>>x[0]>>x[1]>>x[2]>>x[3];
        int c[100009];
        for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++)c[j]=a[j]^x[j%4];
            while(b[i]){
                g++;
                b[i]=_2(b[i]);
                for(int j=1;j<=b[i];j++){
                    if(win[g][j]=='0'){
                        int z=min(c[j*2-1],c[j*2]);
                        if(z>=g)c[j]=z;
                        else c[j]=max(c[j*2-1],c[j*2]);
                    }else{
                        int z=max(c[j*2-1],c[j*2]);
                        if(z>=g)c[j]=z;
                        else c[j]=min(c[j*2-1],c[j*2]);
                    }
                }
            }ans+=c[1];
        }cout<<ans<<"\n";
    }
}
